@echo off
chcp 65001 >nul
echo ========================================
echo   南昌旅游系统 - 生产环境部署脚本
echo ========================================
echo.

:: 检查管理员权限
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo [错误] 请以管理员身份运行此脚本！
    pause
    exit /b 1
)

set PROJECT_DIR=%~dp0..
cd /d %PROJECT_DIR%

echo [1/8] 检查环境...
python --version >nul 2>&1
if %errorLevel% neq 0 (
    echo [错误] 未找到Python，请先安装Python 3.8+
    pause
    exit /b 1
)

node --version >nul 2>&1
if %errorLevel% neq 0 (
    echo [错误] 未找到Node.js，请先安装Node.js 16+
    pause
    exit /b 1
)

echo [2/8] 配置后端环境...
cd backend
if not exist venv (
    echo 创建Python虚拟环境...
    python -m venv venv
)

call venv\Scripts\activate.bat
echo 升级pip...
python -m pip install --upgrade pip
echo 安装Python依赖...
pip install -r requirements.txt
pip install gunicorn python-dotenv

:: 创建.env文件（如果不存在）
if not exist .env (
    echo 创建.env配置文件...
    python -c "from django.core.management.utils import get_random_secret_key; print('SECRET_KEY=' + get_random_secret_key())" > .env.tmp
    echo DEBUG=False >> .env.tmp
    echo ALLOWED_HOSTS=* >> .env.tmp
    echo DB_NAME=nanchang_tour >> .env.tmp
    echo DB_USER=root >> .env.tmp
    echo DB_PASSWORD=123456 >> .env.tmp
    echo DB_HOST=localhost >> .env.tmp
    echo DB_PORT=3306 >> .env.tmp
    type .env.tmp > .env
    del .env.tmp
    echo [提示] 请编辑 backend\.env 文件配置数据库连接信息
)

echo [3/8] 数据库迁移...
python manage.py migrate --noinput
if %errorLevel% neq 0 (
    echo [警告] 数据库迁移失败，请检查数据库配置
)

echo [4/8] 收集静态文件...
if not exist staticfiles mkdir staticfiles
python manage.py collectstatic --noinput
if %errorLevel% neq 0 (
    echo [警告] 静态文件收集失败
)

echo [5/8] 配置前端环境...
cd ..\frontend
if not exist node_modules (
    echo 安装前端依赖...
    call npm install
    if %errorLevel% neq 0 (
        echo [错误] 前端依赖安装失败
        pause
        exit /b 1
    )
)

echo [6/8] 构建前端生产版本...
call npm run build
if %errorLevel% neq 0 (
    echo [错误] 前端构建失败
    pause
    exit /b 1
)

echo [7/8] 创建部署目录...
if not exist ..\deploy mkdir ..\deploy
if not exist ..\deploy\backend mkdir ..\deploy\backend
if not exist ..\deploy\frontend mkdir ..\deploy\frontend

echo 复制后端文件...
xcopy /E /I /Y backend\*.* ..\deploy\backend\ /EXCLUDE:backend\exclude.txt 2>nul
if not exist backend\exclude.txt (
    echo venv\ > backend\exclude.txt
    echo __pycache__\ >> backend\exclude.txt
    echo *.pyc >> backend\exclude.txt
    echo .env >> backend\exclude.txt
)

echo 复制前端文件...
xcopy /E /I /Y frontend\dist\*.* ..\deploy\frontend\ 2>nul

echo [8/8] 生成部署说明...
(
echo # 部署完成！
echo.
echo ## 部署文件位置
echo - 后端: deploy\backend\
echo - 前端: deploy\frontend\
echo.
echo ## 启动服务
echo.
echo ### Windows（开发/测试）
echo ```bash
echo # 启动后端
echo cd deploy\backend
echo venv\Scripts\activate
echo python manage.py runserver 0.0.0.0:8000
echo.
echo # 启动前端（使用Nginx或IIS）
echo # 将 deploy\frontend\ 目录配置为网站根目录
echo ```
echo.
echo ### Linux（生产环境）
echo 1. 将 deploy 目录上传到服务器
echo 2. 配置Nginx（参考 nginx.conf）
echo 3. 使用Gunicorn启动后端：
echo    gunicorn -c gunicorn_config.py travel_plan.wsgi:application
echo 4. 配置systemd服务（参考 nanchang-tour.service）
echo.
echo ## 重要提示
echo 1. 修改 backend\.env 中的数据库配置
echo 2. 修改 SECRET_KEY 为随机值
echo 3. 设置 ALLOWED_HOSTS 为实际域名或IP
echo 4. 配置防火墙开放端口（80, 443, 8000）
echo 5. 配置SSL证书（HTTPS）
) > ..\deploy\README_DEPLOY.txt

echo.
echo ========================================
echo   ✅ 部署完成！
echo ========================================
echo.
echo 部署文件已生成到: deploy\ 目录
echo 请查看 deploy\README_DEPLOY.txt 了解后续步骤
echo.
pause

